import docx
import os
import re

print(r'请输入文档完整路径（例子：E:\vtest）：', end='')
file_path = input()

# 获取目录下的所有条目
entries = os.listdir(file_path)
print(entries)

# 获取违禁词列表
Prohibited_lists = []
while True:
    print('请输入要查询的关键字（例子：奥利给），按q退出输入：', end='')
    Prohibited_words = input()
    if Prohibited_words == 'q':
        break
    Prohibited_lists.append(Prohibited_words)

print("退出循环，禁止词汇列表：", Prohibited_lists)


# 遍历当前所有条目
for entry in entries:
    if entry.endswith('.docx'):
        # 使用os.path.join()构造完整文件路径
        full_entry_path = os.path.join(file_path, entry)

        # 使用 python-docx 打开文档
        doc = docx.Document(full_entry_path)

        # 将每一个段落的文本合并为一个字符串
        text = " ".join([para.text for para in doc.paragraphs])

        # 正则表达式匹配关键字
        for Prohibited_list in Prohibited_lists:
            ProhibitedRegex = re.compile(rf'.*{Prohibited_list}+.*')
            mo = ProhibitedRegex.search(text)
            if mo is not None:
                print(f'<<{full_entry_path}>> 文档中出现了关键词：{Prohibited_list}')

                # 使用os.path.join()构造完整文件路径
                full_text_path = os.path.join(file_path, 'problems.txt')

                # 将问题写入text文档，并保存到当前目录
                with open(full_text_path, 'a') as f:
                    f.write(f'<<{full_entry_path}>> 文档中出现了关键词：{Prohibited_list}\n')
            else:
                print(f'<<{full_entry_path}>> 文档没有出现关键词：{Prohibited_list}。')

    elif os.path.isdir(os.path.join(file_path, entry)):

        # 使用字符串拼接一下目录
        file_path = file_path + '\\' + entry

        # 获取目录下的所有条目
        entries = os.listdir(file_path)
        print(entries)
        # 遍历当前所有条目
        for entry_1 in entries:
            if entry_1.endswith('.docx'):

                # 使用os.path.join()构造完整文件路径
                full_entry_path = os.path.join(file_path, entry_1)

                # 使用 python-docx 打开文档
                doc = docx.Document(full_entry_path)

                # 将每一个段落的文本合并为一个字符串
                text = " ".join([para.text for para in doc.paragraphs])

                # 正则表达式匹配关键字
                for Prohibited_list in Prohibited_lists:
                    ProhibitedRegex = re.compile(rf'.*{Prohibited_list}+.*')
                    mo = ProhibitedRegex.search(text)
                    if mo is not None:
                        print(f'<<{full_entry_path}>> 文档中出现了关键词：{Prohibited_list}')

                        # 使用os.path.join()构造完整文件路径
                        full_text_path = os.path.join(file_path, 'problems.txt')

                        # 将问题写入text文档，并保存到当前目录
                        with open(full_text_path, 'a') as f:
                            f.write(f'<<{full_entry_path}>> 文档中出现了关键词：{Prohibited_list}\n')
                    else:
                        print(f'<<{full_entry_path}>> 文档没有出现关键词：{Prohibited_list}。')
